/**
 * 责任链模式：为请求创建了一个接收者对象的链，允许将请求沿着接收者链传递，直到请求被处理为止，对请求的发送者和接收者进行解耦。
 * 
 * 示例需求：
 * 创建抽象类 AbstractLogger，带有详细的日志记录级别。然后我们创建三种类型的记录器，
 * 都扩展了 AbstractLogger。每个记录器消息的级别是否属于自己的级别，
 * 如果是则相应地打印出来，否则将不打印并把消息传给下一个记录器。
 * 
 * 角色：
 * 处理器接口：AbstractLogger
 * 具体处理器：ConsloleLogger、ErrorLogger、FileLogger
 * 客户端：SimpleMain
 */
public class SimpleMain {
  private static AbstractLogger getChainOfLoggers(){
 
      AbstractLogger errorLogger = new ErrorLogger(AbstractLogger.ERROR);
      AbstractLogger fileLogger = new FileLogger(AbstractLogger.DEBUG);
      AbstractLogger consoleLogger = new ConsoleLogger(AbstractLogger.INFO);
 
      errorLogger.setNextLogger(fileLogger);
      fileLogger.setNextLogger(consoleLogger);
 
      return errorLogger;  
   }
 
   public static void main(String[] args) {
      AbstractLogger loggerChain = getChainOfLoggers();
 
      loggerChain.logMsg(AbstractLogger.INFO, "This is an information.");
 
      loggerChain.logMsg(AbstractLogger.DEBUG, 
         "This is a debug level information.");
 
      loggerChain.logMsg(AbstractLogger.ERROR, 
         "This is an error information.");
   }
}
